home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Zoomer.C < prev    next >
C/C++ Source or Header  |  1992-05-13  |  1KB  |  71 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "Zoomer.h"
  6.  
  7. #include "Class.h"
  8. #include "Menu.h"
  9. #include "Clipper.h"
  10. #include "MenuBar.h"
  11.   
  12. //---- Zoomer ------------------------------------------------------------------
  13.  
  14. NewMetaImpl(Zoomer,Scroller, (T(defaultzoom)));
  15.  
  16. Zoomer::Zoomer(VObject *v, Point extent, float dz) : Scroller(v, extent)
  17. {
  18.     defaultzoom= dz;
  19. }
  20.  
  21. Menu *Zoomer::MakeMenu(int menuId)
  22. {
  23.     if (menuId == cVIEWMENU) {
  24.     Menu *m= new Menu(cVIEWMENU, "View");
  25.     m->AppendItems(
  26.             "Zoom Out@>",             cZOOMOUT,
  27.             "Zoom In@<",              cZOOMIN,
  28.             "Actual Size",            cZOOMRESET,
  29.             0);
  30.     return m;
  31.     }
  32.     return 0;
  33. }
  34.  
  35. Clipper *Zoomer::MakeClipper()
  36. {
  37.     Clipper *cl= Scroller::MakeClipper();
  38.     cl->SetZoom(defaultzoom);
  39.     return cl;
  40. }
  41.  
  42. void Zoomer::DoSetupMenu(Menu *mp)
  43. {
  44.     Scroller::DoSetupMenu(mp);
  45.     if (vf->GetZoom() < 1024)
  46.     mp->EnableItem(cZOOMIN);
  47.     if (vf->GetZoom() > 0.01)
  48.     mp->EnableItem(cZOOMOUT);
  49.     if (vf->GetZoom() != defaultzoom)
  50.     mp->EnableItem(cZOOMRESET);
  51. }
  52.  
  53. Command *Zoomer::DoMenuCommand(int cmd)
  54. {
  55.     switch (cmd) {
  56.     case cZOOMOUT:
  57.     vf->SetZoom(vf->GetZoom()/1.2);
  58.     break;
  59.     case cZOOMIN:
  60.     vf->SetZoom(vf->GetZoom()*1.2);
  61.     break;
  62.     case cZOOMRESET:
  63.     vf->SetZoom(defaultzoom);
  64.     break;
  65.     default:
  66.     return Scroller::DoMenuCommand(cmd);
  67.     }
  68.     return gNoChanges;
  69. }
  70.  
  71.